import type { PluginOption } from 'vite'
import vue from '@vitejs/plugin-vue'
// 监控config文件，不用restart
import ViteRestart from 'vite-plugin-restart'

// vite-plugin-imagemin 打包压缩图片
// import viteImagemin from 'vite-plugin-imagemin'

// vite-plugin-compression 开启gzip、br压缩
import compressPlugin from 'vite-plugin-compression'

// 全局配置composition API
import AutoImport from 'unplugin-auto-import/vite'

// 全局配置组件引用
import Components from 'unplugin-vue-components/vite' // 注意后面有个/vite
import { VitePWA } from 'vite-plugin-pwa'
export const allPlugin = (mode) => {
  const isDev = mode === 'development'
  const pluginArr:PluginOption|PluginOption[] = [
    vue(),
    ViteRestart({
      restart: [
        'my.config.[jt]s'
      ]
    }),
    compressPlugin({
      ext: '.gz', // gz br
      algorithm: 'gzip', // brotliCompress gzip
      deleteOriginFile: true
    }),
    AutoImport({
      imports: ['vue', 'vue-router'],
      // 可以选择auto-import.d.ts生成的位置，使用ts建议设置为'src/auto-import.d.ts'
      dts: 'src/auto-import.d.ts'
    }),
    Components({
      dirs: ['src/components', 'src/demo'],
      extensions: ['vue', 'tsx'],
      // 配置文件生成位置
      dts: 'src/components.d.ts'
    })
    // viteImagemin({
    //   gifsicle: {
    //     optimizationLevel: 7,
    //     interlaced: false
    //   },
    //   optipng: {
    //     optimizationLevel: 7
    //   },
    //   webp: {
    //     quality: 75
    //   },
    //   mozjpeg: {
    //     quality: 65
    //   },
    //   pngquant: {
    //     quality: [0.65, 0.9],
    //     speed: 4
    //   },
    //   svgo: {
    //     plugins: [
    //       {
    //         removeViewBox: false
    //       },
    //       {
    //         removeEmptyAttrs: false
    //       }
    //     ]
    //   }
    // })
  ]
  if (!isDev) {
    pluginArr.push(VitePWA())
  }
  return pluginArr
}
